home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Delphi Informant Complete 1995 - 2000
/
Delphi Informant Complete 1995 to 2000.iso
/
Delphi Informant Magazine Complete Works SOURCE CODE 1998.rar
/
1998
/
Nov
/
di9811gd
/
Example1
/
Unit1.pas
< prev
Wrap
Pascal/Delphi Source File
|
1997-11-02
|
3KB
|
114 lines
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TGetWordProc = procedure(sz, szResult: PChar); stdcall;
TForm1 = class(TForm)
btnLoad: TButton;
btnUnload: TButton;
Edit1: TEdit;
Label1: TLabel;
btnGetFirstWord: TButton;
btnGetNextWord: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btnLoadClick(Sender: TObject);
procedure btnUnloadClick(Sender: TObject);
procedure btnGetFirstWordClick(Sender: TObject);
procedure btnGetNextWordClick(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
LibHandle: THandle;
end;
var
GetFirstWord: TGetWordProc;
GetNextWord: TGetWordProc;
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
LibHandle := 0;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if LibHandle <> 0 then
FreeLibrary(LibHandle);
end;
procedure TForm1.btnLoadClick(Sender: TObject);
begin
if LibHandle = 0 then
LibHandle := LoadLibrary('Dll1.dll');
if (LibHandle = 0) then
raise Exception.Create('Unable to load library.')
else begin
Edit1.Enabled := True;
btnGetFirstWord.Enabled := True;
GetFirstWord := GetProcAddress(LibHandle, 'GetFirstWord');
GetNextWord := GetProcAddress(LibHandle, 'GetNextWord');
end;
end;
procedure TForm1.btnUnloadClick(Sender: TObject);
begin
try
FreeLibrary(LibHandle);
GetFirstWord := nil;
GetNextWord := nil;
finally
LibHandle := 0;
Edit1.Enabled := False;
btnGetFirstWord.Enabled := False;
btnGetNextWord.Enabled := False;
end;
end;
procedure TForm1.btnGetFirstWordClick(Sender: TObject);
var
szResult: PChar;
begin
GetMem(szResult, Length(Edit1.Text) + 1);
try
GetFirstWord(PChar(Edit1.Text), szResult);
ShowMessage(String(szResult));
btnGetNextWord.Enabled := True;
finally
FreeMem(szResult, Length(Edit1.Text) + 1);
end;
end;
procedure TForm1.btnGetNextWordClick(Sender: TObject);
var
szResult: PChar;
begin
GetMem(szResult, Length(Edit1.Text) + 1);
try
GetNextWord(PChar(Edit1.Text), szResult);
ShowMessage(String(szResult));
finally
FreeMem(szResult, Length(Edit1.Text) + 1);
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
btnGetNextWord.Enabled := False;
end;
end.